package com.cf.r1003_ak;

import java.io.*;
import java.util.Arrays;

public class c {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StreamTokenizer in = new StreamTokenizer(br);
        PrintWriter out = new PrintWriter(System.out);
        in.nextToken();
        int t = (int) in.nval;
        while (t-- > 0) {
            in.nextToken();
            int n = (int) in.nval;
            in.nextToken();
            int m = (int) in.nval;

            long[] a = new long[n];
            for (int i = 0; i < n; i++) {
                in.nextToken();
                a[i] = (long) in.nval;
            }

            long[] b = new long[m];
            for (int i = 0; i < m; i++) {
                in.nextToken();
                b[i] = ((long) in.nval);
            }

            Arrays.sort(b);

            boolean ans = true;
            long pre = Long.MIN_VALUE;

            for (int i = 0; i < n; i++) {
                long ai = a[i];
                long best = Long.MAX_VALUE;
                if (ai >= pre) {
                    best = ai;
                }
                long target = pre + ai;
                int idx = Arrays.binarySearch(b, target);
                if (idx < 0) {
                    idx = -idx - 1;
                }
                if (idx < m) {
                    long c = b[idx] - ai;
                    if (c < best && c >= pre) {
                        best = c;
                    }
                }
                if (best == Long.MAX_VALUE) {
                    ans = false;
                    break;
                }
                pre = best;
            }
            out.println(ans ? "Yes" : "No");
        }
        out.close();
        out.close();
        br.close();
    }

}
